package data;

import java.sql.Connection;




import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import dataTransferObject.Estado;


public class JDBCEstadoDAO implements IEstadoDAO {
	
	
	
	public JDBCEstadoDAO(){
	}
	
	
	
	public List<Estado> selectEstado(Connection conn,int idUsuario) {

		List<Estado> lista= new ArrayList<Estado>();
		Estado estado=null;
		
		PreparedStatement stat=null;
		ResultSet resultSet=null;
		String sql="SELECT * FROM petsociety.estado estado, petsociety.usuario usuario WHERE estado.ID_USUARIO=? AND usuario.ID_USUARIO=estado.ID_USUARIO";
		try{
		stat = conn.prepareStatement(sql);
		stat.setInt(1, idUsuario);
		resultSet= stat.executeQuery();
		
		while(resultSet.next()){
			 estado=new Estado();
			 estado.setIdEstado(resultSet.getInt("ID_ESTADO"));
						 
			 Integer anyo=resultSet.getDate("HORA").getYear()+1900;
			 Date hora= new Date(anyo, resultSet.getDate("HORA").getMonth(), resultSet.getDate("HORA").getDate(), resultSet.getTime("HORA").getHours(), resultSet.getTime("HORA").getMinutes());
			 estado.setHora(hora);
			 estado.setComentario(resultSet.getString("COMENTARIO"));
			 
			 lista.add(estado);
		}
		
		
		} catch(SQLException e) { 
			System.out.println("selectEstado Message: " + e.getMessage());
	        System.out.println("selectEstado SQLState: " + e.getSQLState());
	        System.out.println("selectEstado ErrorCode: " + e.getErrorCode());
			
		}finally {
	        try {

	            if (resultSet != null)
	                resultSet.close();
	            if (stat != null)
	                stat.close();
	        } catch (SQLException e) {
	        } 
		}
		
	return lista;	
	}
	
	public boolean insertEstado(int idUsuario, String comentario) {
		Connection conn = ConnectionManager.getInstance().CheckOut();
		PreparedStatement stmt=null;
		
		String sql = "INSERT INTO petsociety.estado" +
				" (ID_USUARIO, HORA, COMENTARIO)"+
				" VALUES (?, ?, ?)";
		
		try{
			stmt = conn.prepareStatement(sql);
			
			
			Calendar cal= Calendar.getInstance();
			Integer anyo=cal.getTime().getYear()+1900;
			String tiempo=anyo + "-"+cal.getTime().getMonth() +"-"+ cal.getTime().getDate() + " " +cal.getTime().getHours() + ":" +cal.getTime().getMinutes() +":" + cal.getTime().getSeconds();

			
			stmt.setInt(1, idUsuario);
			stmt.setString(2, tiempo);
			stmt.setString(3, comentario);
			
			
			stmt.executeUpdate();

		} catch (SQLException e) {
            System.out.println("insertEstado Message: " + e.getMessage());
            System.out.println("insertEstado SQLState: " + e.getSQLState());
            System.out.println("insertEstado ErrorCode: " + e.getErrorCode());
        } finally {
        	ConnectionManager.getInstance().CheckIn(conn);
            try {
                if (stmt != null) 
                    stmt.close();
                
            } catch (SQLException e) {
            }
        }		
		
		
		
		return true;
		
	}
	

}
